热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为了使用phpthreads,在Ubuntu上重新编译php源码和phpthread源码

傻瓜式apt-get安装的php不支持phpthreads,搜索好久得到的答案是:使用源码编译安装。下面开始:1.下载php源码和phpthread源码,然后解压.使用的ph

傻瓜式apt-get 安装的php不支持phpthreads,搜索好久得到的答案是:使用源码编译安装。

下面开始:

1.下载php源码和phpthread源码,然后解压. 使用的php版本是5.6.12,phpthreads版本是2.0.9

cd / usr / local / src
wget http : //uk1.php.net/get/php-5.6.12.tar.gz/from/this/mirror -O php.tar.gz
tar xzvf php . tar . gz
cd php - 5.6.12 / ext
wget https://github.com/krakjoe/pthreads/archive/v2.0.9.tar.gz
tar xzvf v2.0.9.tar.gz

2.安装一些依赖包

apt - get install libmemcached - dev libmcrypt - dev libcurl4 - openssl - dev libgd2 - xpm - dev \
libmysqlclient - dev zlib1g - dev libmongo - client - dev libssl1 . 0.0 - dbg \
libssl - dev libssl - dev libsslcommon2 - dev libgd2 - xpm - dev


3.编译php,配置并安装

cd / usr / local / src / php - 5.6.12
 
. / buildconf -- force
make clean

. / configure \
-- prefix = / usr / local / src / php - 5.6.12 \
-- with - libdir = / lib / x86_64 - linux - gnu / \
-- with - openssl = / usr -- with - curl = / usr \
-- disable - cgi \
-- with - config - file - path = : / usr / local / src / php - 5.6.12 / etc \
-- enable - gd - native - ttf -- enable - mysqlnd \
-- enable - opcache -- enable - pcntl \
-- enable - debug -- enable - maintainer - zts \
-- enable - pthreads -- enable - mbstring \
-- enable - bcmath -- enable - exif \
-- enable - ftp -- enable - shmop \
-- enable - soap -- enable - sockets \
-- enable - sysvmsg -- enable - sysvsem \
-- enable - sysvshm -- enable - wddx \
-- enable - opcache -- enable - zip -- enable - dba

make
make install

4.把 extension = "pthreads.so"加到php.ini里

cd / usr / local / src / php - 5.6.12
mkdir etc
cp php . ini - production etc / php . ini
vi etc/php.ini

然后把 extension = "pthreads.so"加到最后面。



接下来是编译生成pthreads.so

cd /usr/local/src/php-5.6.12/ext/pthreads-2.0.9

/usr/local/src/php-5.6.12/bin/phpize

 ./configure --with-php-cOnfig=/usr/local/src/php-5.6.12/bin/php-config

make

make install


然后创建一个软链接,更改php的默认执行路径:

ln -s /usr/bin/php /usr/local/src/php-5.6.12/sapi/cli/php


 查看php安装的模块:

php -m

如果列出来的模块有phpthread,那么就安装成功了。


使用phpthreads:


class Request extends Thread {
    public $url;
    public $data;
    public function __construct($url) {
        $this->url = $url;
    }
    public function run() {
        // 线程处理一个耗时5秒的任务
        for($i=0;$i<5;$i++) {
            echo '线程: '.date('H:i:s')."\n";
            sleep(1);
        }
        $response = file_get_contents($this->url);
        if ($response) {
            $this->data = array($response);
        }
        echo "线程: 任务完成\n";
    }
}
$request = new Request('hello.html');
// 运行线程:start()方法会触发run()运行
if ($request->start()) {
    // 主进程处理一个耗时10秒的任务,此时线程已经工作
    for($i=0;$i<10;$i++) {
        echo '进程: '.date('H:i:s')."\n";
        sleep(1);
    }
    // 同步线程并输出线程返回的数据
    $request->join();
    echo '线程返回数据: '.$request->data[0];
}



推荐阅读
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
  • charles3.11.1抓https包
    结论先行:用的是安卓测试机,没加固之前的生产环境的安装包,可以抓到https请求加固之后的包【也就是要上应用市场的包】,抓不到https请求电脑上的操作:1.安装证书【电脑上安装了 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  •    实现了uboot对非linuxkernel的引导。虽然有一个IH_TYPE_STANDALONE,但是没有实现。nnd.只能自己想办法。实现详细见 ... [详细]
author-avatar
cxsw01
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有